# 递归函数
"""
递归函数, 简单来说就是在函数运行的过程中调用本身

使用递归函数,需要明确两点:

要有结束条件
合理的递归条件
"""

# 基于递归函数实现，计算阶乘 1*2*3*....*n
# def count_2(n):
#     if n == 1:
#         return 1
#     return n * count_2(n - 1)
#
# value = count_2(5)
# print(value)

# count_2(5)  --> return 5 * count_2(4)
# return 5 * count_2(4) --> return 5 * 4 * count_2(3)
# return 5 * 4 * count_2(3) --> return 5 * 4 * 3 * count_2(2)
# return 5 * 4 * 3 * count_2(2)  -->  return 5 * 4 * 3 * 2 * 1

# 实际上等于是在声明一个嵌套了n次的列表
# lst = [
#     1, [
#         2, [
#             3
#         ]
#     ]
# ]
#
# def getValue(dataMap, newLst):
#     for el in dataMap:
#         if isinstance(el, list):
#             print(f"{el} 是一个列表，递归调用本身 getValue({el}, newLst)")
#             getValue(el, newLst)
#         else:
#             print(f"{el} 这不是一个列表，将其加入到newList中")
#             newLst.append(el)
#
# newLst = []
# getValue(lst, newLst)
# print(newLst)

def test(n):
    print(n)
    if n == 1:
        return n
    else:
        test(n - 1)
    print(n)
test(5)

# 最大的作用是在接口自动化测试中，解决接口依赖的问题